home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / fix_disk.zip / BOOTCOPY.ASM next >
Assembly Source File  |  1987-03-04  |  3KB  |  86 lines

  1. PAGE ,132
  2. TITLE Copy Disk Boot Record, Version 1.00, 04-Mar-1987
  3.  
  4. CODE      SEGMENT BYTE PUBLIC 'CODE'
  5.  
  6.           ASSUME  CS:CODE,DS:CODE
  7.  
  8.           ORG     5CH
  9. FCB1      LABEL   BYTE
  10.  
  11.           ORG     6CH
  12. FCB2      LABEL   BYTE
  13.  
  14.           ORG     100H
  15.  
  16. START:    JMP     BEGIN
  17.  
  18. SIGNON    DB      "Copy Disk Boot Sector Program, Version 1.00",13,10
  19.           DB      "SMG Software",13,10
  20.           DB      "(C) Copyright 1987 Steven Georgiades",13,10,10,"$"
  21.  
  22. DONE_MSG  DB      "The Boot Record from Drive x: has been copied to Drive x:!",13,10,"$"
  23. ERR_DRV   DB      "Invalid Drive Letter!",7,13,10,"$"
  24. ERR_RD    DB      "Error Reading Boot Record from Source!",7,13,10,"$"
  25. ERR_WR    DB      "Error Writing Boot Record to Destination!",7,13,10,"$"
  26.  
  27. SRC_DRV   DB      ?
  28. DST_DRV   DB      ?
  29.  
  30. BEGIN:    PUSH    AX                            ; Save Drive Validity Info
  31.           MOV     AH,9                          ; Output Sign-On Message
  32.           MOV     DX,OFFSET SIGNON
  33.           INT     21H
  34.           POP     AX                            ; Restore Drive Validity Info
  35.           CMP     AX,0                          ; If Invalid,
  36.           JE      DRV_OK
  37. DRV_ERR:  MOV     DX,OFFSET ERR_DRV             ;   Setup Pointer to Error Msg
  38. ERR_OUT:  MOV     AH,9                          ;   Output Error Message
  39.           INT     21H
  40.           MOV     AX,4C01H                      ;   Exit to DOS (Return = 1)
  41.           INT     21H
  42. DRV_OK:   MOV     AL,FCB1[0]                    ; Read Source Drive Number
  43.           DEC     AL
  44.           JS      DRV_ERR                       ; If Default,
  45.           MOV     SRC_DRV,AL                    ; Convert Drive Number to Letter
  46.           ADD     AL,'A'
  47.           MOV     DONE_MSG[27],AL
  48.           MOV     AL,FCB2[0]                    ; Read Source Drive Number
  49.           DEC     AL
  50.           JS      DRV_ERR                       ; If Default,
  51.           MOV     DST_DRV,AL                    ; Convert Drive Number to Letter
  52.           ADD     AL,'A'
  53.           MOV     DONE_MSG[55],AL
  54.           
  55.           MOV     AL,SRC_DRV                    ; Read Source Boot Record
  56.           MOV     BX,OFFSET FATBUF
  57.           MOV     CX,1
  58.           MOV     DX,0
  59.           INT     25H
  60.           JNC     RD_OK
  61.           POPF
  62.           MOV     DX,OFFSET ERR_RD
  63.           JMP     ERR_OUT
  64. RD_OK:    POPF
  65.           MOV     AL,DST_DRV                    ; Write Destination Boot Record
  66.           MOV     BX,OFFSET FATBUF
  67.           MOV     CX,1
  68.           MOV     DX,0
  69.           INT     26H
  70.           JNC     WR_OK
  71.           POPF
  72.           MOV     DX,OFFSET ERR_WR
  73.           JMP     ERR_OUT
  74. WR_OK:    POPF
  75.           MOV     AH,9
  76.           MOV     DX,OFFSET DONE_MSG
  77.           INT     21H
  78.           MOV     AX,4C00H
  79.           INT     21H
  80.  
  81. FATBUF    LABEL   WORD
  82.  
  83. CODE      ENDS
  84.  
  85.           END     START
  86.